package com.woniuxy.ssm.controller;

import com.woniuxy.ssm.bean.Role;
import com.woniuxy.ssm.bean.Users;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;

/**
 * @author linke
 * @version 1.0
 * @className: ValidController
 * @description: 数据验证控制器
 * @date 2021/11/19 23:48
 */
@Controller
@RequestMapping("/valid")
public class ValidController {
    /**
     * 用于测试数据检验，并返回错误信息
     * @param user
     * @return
     */
    @PostMapping("/user")
    public ModelAndView addUsers(@RequestBody @Valid Users user ,BindingResult bindingResult){
        ModelAndView modelAndView = new ModelAndView();
        //返回所有校验失败的字段
        if (bindingResult.hasErrors()) {
            FieldError fieldError = bindingResult.getFieldError();
            //断言 fieldError不为空时添加数据
            assert fieldError != null;
            modelAndView.addObject("bindingResult", fieldError.getField()+" ："+bindingResult.getFieldError().getDefaultMessage());
            if (fieldError.isBindingFailure()){
                //如果有字段数据异常的，那么我们就不要执行后续的业务代码  持久化操作等代码就不要执行了
                modelAndView.addObject("user", "传入的对象是："+user);
            }
        }

        modelAndView.setViewName("usersValid");
        return modelAndView;
    }
    /**
     * 用于测试数据检验，并返回错误信息
     *
     * @param role
     * @return
     */
    @PostMapping("/role")
    public ModelAndView addRole(@RequestBody @Valid Role role , BindingResult bindingResult){
        ModelAndView modelAndView = new ModelAndView();
        ///返回所有校验失败的字段
        if (bindingResult.hasErrors()) {
            FieldError fieldError = bindingResult.getFieldError();
            //查看错误信息
            System.out.println(fieldError);
            //断言 fieldError不为空时添加数据
            assert fieldError != null;
            modelAndView.addObject("bindingResult", fieldError.getField()+" ："+bindingResult.getFieldError().getDefaultMessage());
            if (fieldError.isBindingFailure()){
                //如果有字段数据异常的，那么我们就不要执行后续的业务代码  持久化操作等代码就不要执行了
                modelAndView.addObject("role", "传入的对象是："+role);
            }
        }

        modelAndView.setViewName("roleValid");
        return modelAndView;
    }

}
